// ETheme.qml
import QtQuick 2.15

// ==========================================
// 全局主题管理对象
// 负责管理颜色、阴影、透明度、背景图等
// 可在 QML 中通过 import Components; Components.ETheme 使用
// ==========================================
QtObject {
    id: theme

    // === 主题开关 ===
    property bool isDark: false
    // 是否为暗色主题
    // true 表示暗色模式，false 表示亮色模式

    // === 基础颜色 ===
    property color primaryColor: isDark ? "#121212" : "#ffffff"
    // 主背景色
    property color secondaryColor: isDark ? "#212121" : "#E9EEF6"
    // 次级背景色或控件背景
    property color textColor: isDark ? "#ffffff" : "#000000"
    // 文本颜色
    property color borderColor: isDark ? "#666666" : "#cccccc"
    // 默认边框颜色
    property color blurOverlayColor: isDark ? "#4E000000" : "#4EFFFFFF"
    // 模糊覆盖层颜色（可用于弹窗、遮罩层），透明度约 30%
    property color focusColor: "#00C4B3"
    // 控件获得焦点时高亮颜色，固定不随主题变化

    // === 阴影统一样式 ===
    property color shadowColor: isDark ? "#80000000" : "#40000000"
    // 阴影颜色
    property real shadowBlur: 1.0
    // 阴影模糊半径
    property int shadowXOffset: 2
    // 阴影水平偏移
    property int shadowYOffset: 2
    // 阴影垂直偏移

    // === 背景图设置 ===
    property url backgroundImage: isDark ? "qrc:/src/fonts/pic/06.jpg" : "qrc:/src/fonts/pic/07.png"
    // 当前主题背景图
    property real backgroundOpacity: 1.0
    // 背景图透明度，可在界面中通过绑定修改

    // 提供接口修改背景图
    function setBackground(imageUrl) {
        // imageUrl: 新的背景图路径
        backgroundImage = imageUrl
    }

    // 提供接口修改背景透明度
    function setBackgroundOpacity(opacity) {
        // opacity: 透明度，范围 0.0 ~ 1.0
        if(opacity < 0) opacity = 0
        if(opacity > 1) opacity = 1
        backgroundOpacity = opacity
    }

    // === 方法 ===
    function getBorderColor(focused) {
        // 根据控件是否获得焦点返回边框颜色
        // focused: boolean，是否获取焦点
        return focused ? focusColor : borderColor
    }

    function toggleTheme() {
        // 切换主题（暗色/亮色）
        isDark = !isDark
    }
}
